package main // 声明文件所在包
import (
	"fmt" // 导入fmt包
	"net/http"
	"encoding/json"
)

// 定义列表项结构
type Item struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

// 全局变量存储列表
var items []Item
var lastID int

func main() {
	// 初始化列表
	items = make([]Item, 0)

	// 注册路由处理函数
	http.HandleFunc("/items", handleItems)

	// 启动服务器
	fmt.Println("服务器启动在 :8080...")
	http.ListenAndServe(":8080", nil)
}

func handleItems(w http.ResponseWriter, r *http.Request) {
	switch r.Method {
	case http.MethodPost:
		// 创建新列表项
		var newItem Item
		if err := json.NewDecoder(r.Body).Decode(&newItem); err != nil {
			http.Error(w, err.Error(), http.StatusBadRequest)
			return
		}

		// 设置新ID
		lastID++
		newItem.ID = lastID

		// 添加到列表
		items = append(items, newItem)

		// 返回创建的项
		w.Header().Set("Content-Type", "application/json")
		json.NewEncoder(w).Encode(newItem)

	case http.MethodGet:
		// 获取所有列表项
		w.Header().Set("Content-Type", "application/json")
		json.NewEncoder(w).Encode(items)

	default:
		http.Error(w, "不支持的方法", http.StatusMethodNotAllowed)
	}
}